#pragma once

namespace TrueText {

enum TextAlign
{
	LEFT,
	CENTER,
	RIGHT
};
	
struct Point
{
	Point()
		: x(0)
		, y(0)
	{ }

	Point(int x, int y)
		: x(x)
		, y(y)
	{ }

	int x;
	int y;
};

struct Rectangle
{
	int left;
	int top;
	int right;
	int bottom;

	Rectangle()
		: left(0), top(0)
		, right(0), bottom(0)
	{ }

	Rectangle(int left, int top, int right, int bottom)
		: left(left)
		, top(top)
		, right(right)
		, bottom(bottom)
	{ }

	void Shift(Point offset)
	{
		this->left += offset.x;
		this->right += offset.x;
		this->top += offset.y;
		this->bottom += offset.y;
	}
};

struct Dimensions
{
	int Width;
	int Height;

    Dimensions()
        : Width(0)
        , Height(0)
    { }

    Dimensions(int width, int height)
        : Width(width)
        , Height(height)
    { }
};

struct Color
{
	Color()
		: a(0xFF)
		, r(0xFF)
		, g(0xFF)
		, b(0xFF)
	{ }

	Color (int a, int r, int g, int b)
		: a(a)
		, r(r)
		, g(g)
		, b(b)
	{ }

	// Values of color components should be integers in range 0..255
	int a;
	int r;
	int g;
	int b;
};

}